package maumau;

import java.util.*; 

public abstract class MauMau_Intf {
    private String player_name;
    
    // Ctor, load training data here
    MauMau_Intf() {        
    };
    
    // Set and get the player name
    public void setName(String s) {    	
        player_name = s;
    };
    
    public String getName() {
        return player_name;
    };

    // Called when a new game starts
    // This is NOT a good place to load stored training data
    public void newGame() {
        System.out.println(getName() + ": newGame called");
    };

    // Cleanup: Called before Player is destroyed. 
    // Chance to save training data, for example, the Q-values
    public void cleanup() {
        System.out.println(getName() + ": Cleanup called");
    };
    
    // This is the main method. It is called for each new step
    // Return value: one of the actions from the "actions"-vector. This is vector of ACTION_CONSTANTS
    // state: the current state of the environment
    // reward: The reward for the action from the PREVIOUS call to step
    // terminal: indicates if state is a terminal state. For terminal states, the return value is ignored by the environment.
   	abstract public int step(MauMau_State state, Vector<Integer> actions, double reward, boolean terminal);    
}

